/**
 * 封装 axios 请求模块
 */
// 导入JSONBig包
import jsonBig from "json-bigint";
import axios from "axios";
// 要导入是应为axios没挂载到vue上去
import store from "@/store";

const request = axios.create({
  baseURL: "http://geek.itheima.net", // 基础路径
  // transformResponse 允许自定义原始的响应数据（字符串）
  // transformRequest: [
  transformResponse: [
    function (data) {
      try {
        // 如果转换成功则返回转换的数据结果
        // 否则说明data非json
        return jsonBig.parse(data);
      } catch (error) {
        return data;
      }
    },
  ],
});

// 请求拦截器
request.interceptors.request.use(
  function (config) {
    // 请求发起会经过这里
    // config：本次请求的请求配置对象
    const { user } = store.state;
    if (user && user.token) {
      config.headers.Authorization = `Bearer ${user.token}`;
    }

    // 注意：这里务必要返回 config 配置对象，否则请求就停在这里出不去了
    return config;
  },
  function (error) {
    // 如果请求出错了（还没有发出去）会进入这里
    return Promise.reject(error);
  }
);

// 响应拦截器

export default request;
